package news.util;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.lang.reflect.Method;

/**
 * @Author Gong
 * @Description
 * @dATE 2022/2/28 11:50
 **/
public class BaseHttpServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        //1.获取ServletPath：/update.do或addCustomer.do
//        String servletPath=req.getServletPath();
//        //2.去除/ 和.do ，得到类似于update 或addCustomer 这样的字符串
//        String methodName=servletPath.substring(1);
//        methodName=methodName.substring(0, methodName.length()-3);
        String oper = req.getParameter("oper");
        /*
         * 方便添加新方法，直接获取请求的映射地址对应的方法执行。

         */
        try {
            //3.利用反射获取methodName 对应的方法
            Method method=getClass().getDeclaredMethod(oper,HttpServletRequest.class,HttpServletResponse.class);

            //4.利用反射调用对应的方法。
            method.invoke(this,req, resp);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            //e.printStackTrace();

            //5.遇到错误可以直接返回错误提示页面
            resp.sendRedirect("error.jsp");
        }
    }
}
